#include<iostream>
#include<queue>
#include<string>
using namespace std;

// 第K号元素出队
int popk(queue<int>&qu,int k)
{
	int n=qu.size(), x;
	
	// 处理序号1到k-1的元素
	for(int i=1; i<k; i++)
	{
		x=qu.front(); qu.pop(); // 出队元素x
		qu.push(x); // 将x进队
	}
	
	// 出队序号为k的元素e
	int e=qu.front(); qu.pop();
	
	// 处理序号k+1到n的元素
	for(int i=k+1;i<=n;i++)
	{
		x=qu.front(); qu.pop(); // 出队元素x 
		qu.push(x); // 将x进队
	}
	return e;
}

// 打印
void disp(queue<int> qu)
{
	printf("队头到队尾: ");
	while(!qu.empty())
	{
		printf("%d ",qu.front());
		qu.pop();
	}
	printf("\n");
}
	
int main()
{
	// 添加数据
	queue<int> qu;
	qu.push(1);
	qu.push(2);
	qu.push(3);
	qu.push(4);
	printf(" qu: "); disp(qu);
	
	// 第k号元素出队
	int k=3;
	printf(" 出队序号%d的元素:%d\n",k, popk(qu,k));
	printf(" qu: "); disp(qu);
	 
	return 0;
}
